package com.zjdiepu.www.base.core;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

import com.zjdiepu.www.base.enums.type.ResultFlagType;

/**
 * 项目名称：dpqc-parent-manager-base <br/> 
 * 类名称：ApiResponse <br/>  
 * 类描述：通用响应 <br/>    
 * 创建人：xiongxiaotun <br/> 
 * 创建时间：2017年3月30日 上午10:37:32  <br/>   
 * 修改人：xiongxiaotun <br/> 
 * 修改时间：2017年3月30日 上午10:37:32   <br/>  
 * 修改备注：    <br/> 
 * @version V1.0   <br/>
 */
@ApiModel(value="ApiResponse", description="统一响应对象")
public class ApiResponse implements Serializable {
	private static final long serialVersionUID = 1L;
	@ApiModelProperty(name="flag",required=true,value="结果码",example="100100")
	private Boolean overdue;	//是否超时 true 超时，false 正常
	@ApiModelProperty(name="flag",required=true,value="结果码",example="100100")
	private Object flag;	//结果码Integer/String
	@ApiModelProperty(name="message",required=true,value="消息描述",example="系统检测，本次执行成功！【稻普控股集团】")
	private Object message;	//描述 //string
	@ApiModelProperty(name="result",required=false,value="业务数据")
	private Object result;		//返回数据
	
	/**
	 * 构建成功的响应并设置响应数据
	 * @param data
	 * @return
	 */
	public static ApiResponse success(Object data) {
		ApiResponse apiResponse = new ApiResponse();
		apiResponse.setOverdue(false);
		apiResponse.setFlag(ResultFlagType.SUCCESS.getCode());
		apiResponse.setMessage("系统检测，本次执行成功！【稻普控股集团】");
		apiResponse.setResult(data);
		return apiResponse;
	}
	
	/**
	 * 构建超时的响应
	 * @param flag
	 * @param message
	 * @return
	 */
	public static ApiResponse overdue(Object flag, String message) {
		ApiResponse apiResponse = new ApiResponse();
		apiResponse.setFlag(flag);
		apiResponse.setOverdue(true);
		apiResponse.setMessage(message);
		return apiResponse;
	}
	
	/**
	 * 构建失败的响应
	 * @param flag
	 * @param message
	 * @return
	 */
	public static ApiResponse fail(Object flag, String message) {
		ApiResponse apiResponse = new ApiResponse();
		apiResponse.setFlag(flag);
		apiResponse.setOverdue(false);
		apiResponse.setMessage(message);
		return apiResponse;
	}
	
	/**
	 * 构建失败的响应
	 * @param errorCode
	 * @param errorMsg
	 * @return
	 */
	public static ApiResponse fail(BaseEnum baseEnum) {
		ApiResponse apiResponse = new ApiResponse();
		if(null == baseEnum){
			baseEnum = ResultFlagType.FAIL;
		}
		apiResponse.setOverdue(false);
		apiResponse.setFlag(baseEnum.getCode());
		apiResponse.setMessage(baseEnum.getValue());
		return apiResponse;
	}

	public Object getFlag() {
		return flag;
	}

	public void setFlag(Object flag) {
		this.flag = flag;
	}

	public Object getMessage() {
		return message;
	}

	public void setMessage(Object message) {
		this.message = message;
	}

	public Object getResult() {
		return result;
	}

	public void setResult(Object result) {
		this.result = result;
	}

	public Boolean getOverdue() {
		return overdue;
	}

	public void setOverdue(Boolean overdue) {
		this.overdue = overdue;
	}
}
